package cn.com.huzo.service.tech;

import cn.com.huzo.model.entities.tech.MrpFeedingLinesEntity;
import huzofw.service.GenericManager;
import java.util.List;
import java.util.Map;

/**
 * 补料单明细管理服务对象接口。
 *
 * @author 吴旭
 */
public interface MrpFeedingLinesManager extends GenericManager<MrpFeedingLinesEntity, String> {

    /**
     * 根据主表标识，取得明细表数据。
     *
     * @param headerKey
     * @return 明细列表数据
     * @throws Exception
     */
    List<MrpFeedingLinesEntity> fetchLinesByHeaderKey(Long headerKey) throws Exception;

    /**
     * 增加补料单明细。
     *
     * @param itemList 要增加数据列表
     * @return 影响的行数
     * @throws java.lang.Exception
     */
    List<MrpFeedingLinesEntity> insertLines(List<MrpFeedingLinesEntity> itemList) throws Exception;

    /**
     * 从剪切板粘贴数据。
     *
     * @param criterion 剪切板数据
     * @return 影响的行数
     * @throws java.lang.Exception
     */
    List<MrpFeedingLinesEntity> insertFromClipboard(Map<String, Object> criterion) throws Exception;

    /**
     * 通过料号更改当前单耗明细的材料。
     *
     * @param criterion 要更新的数据
     * @return 影响行数
     * @throws java.lang.Exception
     */
    Map<String, Object> updateLinesByMaterialId(Map<String, Object> criterion) throws Exception;

    /**
     * 批量删除补料单明细。
     *
     * @param itemList 要删除的数据
     * @return 影响的行数
     * @throws java.lang.Exception
     */
    List<MrpFeedingLinesEntity> batchDeleteLines(List<MrpFeedingLinesEntity> itemList) throws Exception;

    /**
     * 引入类似补料单明细。
     *
     * @param headerKey 当前补料单标识
     * @param importedBillHeaderKey 要引入的补料单标识
     * @param maxOrderNo 当前最大顺序号
     * @param updatedBy 操作者
     * @return 引入后的补料单明细
     * @throws java.lang.Exception
     */
    List<MrpFeedingLinesEntity> importLinesFromOtherBill(Long headerKey, Long importedBillHeaderKey, Integer maxOrderNo, Long updatedBy) throws Exception;

    /**
     * 更新补料单明细排列顺序。
     *
     * @param itemList 数据列表
     * @return 影响的行数
     * @throws java.lang.Exception
     */
    Integer updateLinesRowNo(List<MrpFeedingLinesEntity> itemList) throws Exception;
}
